﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace JasRibbonApplicatie.Classes
{
    public class TypeMateriaalMetToebehoren
    {
        public const int STANDAARD_WAARDE_DEFECT = 0;
        public const int STANDAARD_WAARDE_ONTLEENBAAR = 0;

        public int materiaalType_id { get; set; }
        public String Type { get; set; }
        public String Naam { get; set; }
        public String Korte_naam { get; set; }
        public String Omschrijving { get; set; }
        public String Afbeelding { get; set; }
        public String File { get; set; }
        public float Waarborg { get; set; }
        public float WaarborgExtraStuks { get; set; }
        public float Dagprijs { get; set; }
        
        // dit zijn geen methodes, omdat deze anders niet in een DataGrid gebruikt kunnen worden
        // Indien iemand een beter manier weet, laat je het maar weten (we staan open voor suggesties)
        public int AantalDefect
        {
            get
            {
                return Queries.GetAantalMateriaalDefect(materiaalType_id);
            }
        }
        
        //aantal aanwezig
        public int Aantal
        {
            get
            {
                return Queries.GetAantalMateriaal(materiaalType_id);
            }
        }

        public int AantalOntleenbaar
        {
            get
            {
                return Queries.GetAantalMateriaalOntleenbaar(materiaalType_id);
            }
        }
        
        // key: toebehorentype, value: int aantal
        public List<toebehorentypes> LijstToebehorenTypes { get; private set; }

        #region Constructors
        
        public TypeMateriaalMetToebehoren()
        {
            LijstToebehorenTypes = new List<toebehorentypes>();
        }

        public TypeMateriaalMetToebehoren(List<toebehorentypes> lijstToebehoren)
        {
            this.LijstToebehorenTypes = lijstToebehoren;
        }
        #endregion

        public void AddToebehoren(toebehorentypes product, int aantal)
        {
            for (int i = 0; i < aantal; i++)
            {
                LijstToebehorenTypes.Add(product);
            }
            //LijstToebehorenTypes.Add(product, aantal);
        }


        #region Overridden methods
        public override int GetHashCode()
        {
            return (materiaalType_id.GetHashCode() + Type.GetHashCode() + Naam.GetHashCode() + Waarborg.GetHashCode() + WaarborgExtraStuks.GetHashCode() + Dagprijs.GetHashCode());
        }

        public override bool Equals(object obj)
        {
            if (obj.GetType().Equals(this.GetType()))
            {
                TypeMateriaalMetToebehoren anderObject = (TypeMateriaalMetToebehoren)obj;
                return (this.GetHashCode() == anderObject.GetHashCode());
            }
            return false;
        }

        public override string ToString()
        {
            return Naam;
        }
        #endregion
    }
}
